export const checkIdNumber=(rule, value, callback) => {
  if (!value) {
    callback(new Error('请输入证件号码'));
  } else {
    let id18 = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    let id15 = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/;
    if (id18.test(value) || id15.test(value)) {
      const city = {
        11: '北京',
        12: '天津',
        13: '河北',
        14: '山西',
        15: '内蒙古',
        21: '辽宁',
        22: '吉林',
        23: '黑龙江 ',
        31: '上海',
        32: '江苏',
        33: '浙江',
        34: '安徽',
        35: '福建',
        36: '江西',
        37: '山东',
        41: '河南',
        42: '湖北 ',
        43: '湖南',
        44: '广东',
        45: '广西',
        46: '海南',
        50: '重庆',
        51: '四川',
        52: '贵州',
        53: '云南',
        54: '西藏 ',
        61: '陕西',
        62: '甘肃',
        63: '青海',
        64: '宁夏',
        65: '新疆',
        71: '台湾',
        81: '香港',
        82: '澳门',
        91: '国外',
      };
      if (!city[value.substr(0, 2)]) {
        return callback(new Error('地址编码错误'));
      } else {
        if (value.length == 18) {
          // 18位身份证需要验证最后一位校验位
          const values = value.split('');
          // ∑(ai×Wi)(mod 11)
          // 加权因子
          let factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
          // 校验位
          let parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x'];
          let sum = 0;
          let ai = 0;
          let wi = 0;
          for (var i = 0; i < 17; i++) {
            ai = values[i];
            wi = factor[i];
            sum += ai * wi;
          }
          if (parity[sum % 11] != values[17]) {
            callback(new Error('证件号码校验位错误'));
          } else {
            callback();
          }
        } else {
          callback();
        }
      }
    } else {
      return callback(new Error('请输入正确的证件号码'));
    }
  }
};

/**
 * 设置手机号的验证规则
 * @param rule
 * @param value
 * @param callback
 * @returns {*}
 */
export const checkPhone = (rule, value, callback) => {
  if (!value) {
    callback(new Error('请输入手机号'))
  } else {
    const reg = /^1[3456789]\d{9}$/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('请输入正确的手机号'))
    }
  }
};